Pass --cfg ndebug when debug = false
authorSteven Fackler <sfackler@gmail.com>
Sat, 12 Jul 2014 22:30:24 +0000 (15:30 -0700)
committerSteven Fackler <sfackler@gmail.com>
Sun, 13 Jul 2014 03:46:11 +0000 (20:46 -0700)
This will disable debug!() and debug_assert!() statements.

src/cargo/ops/cargo_rustc/mod.rs
tests/test_cargo_compile.rs

index e2b115a144cf441914cf85f7df642a286dcc4b7e..7794442587e21c6df9484faa2d90612eb216ab95 100644 (file)
@@ -255,6 +255,11 @@ fn build_base_args(into: &mut Args,
     //     into.push("-g".to_string());
     // }
 
+    if !profile.get_debug() {
+        into.push("--cfg".to_string());
+        into.push("ndebug".to_string());
+    }
+
     if profile.is_test() {
         into.push("--test".to_string());
     }
index a4a5d62c24a10e8ab3f22ee88094bc1c56ed7fcd..fa539e5e9eff53046ad3aea4374b9839bf016f7f 100644 (file)
@@ -1030,6 +1030,7 @@ test!(verbose_release_build {
     assert_eq!(out, format!("\
 {} `rustc {dir}{sep}src{sep}lib.rs --crate-name test --crate-type lib \
         --opt-level 3 \
+        --cfg ndebug \
         -C metadata=test:-:0.0.0:-:file:{dir} \
         -C extra-filename={hash} \
         --out-dir {dir}{sep}target{sep}release \
@@ -1075,6 +1076,7 @@ test!(verbose_release_build_deps {
 {running} `rustc {dir}{sep}foo{sep}src{sep}lib.rs --crate-name foo \
         --crate-type lib \
         --opt-level 3 \
+        --cfg ndebug \
         -C metadata=foo:-:0.0.0:-:file:{dir} \
         -C extra-filename={hash1} \
         --out-dir {dir}{sep}target{sep}release{sep}deps \
@@ -1082,6 +1084,7 @@ test!(verbose_release_build_deps {
         -L {dir}{sep}target{sep}release{sep}deps`
 {running} `rustc {dir}{sep}src{sep}lib.rs --crate-name test --crate-type lib \
         --opt-level 3 \
+        --cfg ndebug \
         -C metadata=test:-:0.0.0:-:file:{dir} \
         -C extra-filename={hash2} \
         --out-dir {dir}{sep}target{sep}release \
@@ -1163,3 +1166,38 @@ test!(implicit_examples {
     assert_that(process(p.bin("test/hello")), execs().with_stdout("Hello, World!\n"));
     assert_that(process(p.bin("test/goodbye")), execs().with_stdout("Goodbye, World!\n"));
 })
+
+test!(standard_build_no_ndebug {
+    let p = project("world")
+        .file("Cargo.toml", basic_bin_manifest("foo"))
+        .file("src/foo.rs", r#"
+            fn main() {
+                if cfg!(ndebug) {
+                    println!("fast")
+                } else {
+                    println!("slow")
+                }
+            }
+        "#);
+
+    assert_that(p.cargo_process("cargo-build"), execs().with_status(0));
+    assert_that(process(p.bin("foo")), execs().with_stdout("slow\n"));
+})
+
+test!(release_build_ndebug {
+    let p = project("world")
+        .file("Cargo.toml", basic_bin_manifest("foo"))
+        .file("src/foo.rs", r#"
+            fn main() {
+                if cfg!(ndebug) {
+                    println!("fast")
+                } else {
+                    println!("slow")
+                }
+            }
+        "#);
+
+    assert_that(p.cargo_process("cargo-build").arg("--release"),
+                execs().with_status(0));
+    assert_that(process(p.bin("release/foo")), execs().with_stdout("fast\n"));
+})